home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol030 / critpath.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  3.4 KB  |  131 lines

  1. 100 CLS
  2. 110 A$=STRING$(80,205)
  3. 120 PRINT A$
  4. 130 PRINT TAB(27)"CRITICAL PATH METHOD #1001"
  5. 140 COLOR 23
  6. 150 PRINT :PRINT :PRINT TAB(39)"IPCO"
  7. 160 COLOR 7
  8. 170 PRINT :PRINT :PRINT TAB(25)"PERSONAL COMPUTER OWNERS GROUP"
  9. 180 PRINT :PRINT :PRINT TAB(19)"p.o. box 10426, pittsburgh,pennsylvania 15234"
  10. 190 PRINT A$
  11. 200 PRINT :PRINT :PRINT :PRINT :PRINT
  12. 210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
  13. 220 A$=INKEY$:IF A$="" THEN 220
  14. 230 CLS
  15. 240 REM IPCO COPYRIGHT 1982
  16. 250 CLS
  17. 260 REM CRITICAL PATH METHOD
  18. 270 REM 'A' ARRAY = START AND END NODES FOR EACH ACTIVITY
  19. 280 REM 'S' ARRAY = EARLY START TIMES FOR EACH ACTIVITY
  20. 290 REM 'F' ARRAY = LATE FINISH TIMES FOR EACH ACTIVITY
  21. 300 REM 'E' ARRAY= DURATIONS AND COSTS OF ACTIVITIES
  22. 310 DIM A(100,2),S(100),F(100),E(100,2)
  23. 320 DEF FNR(Z1)=INT(Z1*1000+.05)/1000
  24. 330 PRINT "           CRITICAL PATH METHOD"
  25. 340 PRINT
  26. 350 PRINT
  27. 360 PRINT
  28. 370 PRINT
  29. 380 PRINT
  30. 390 PRINT
  31. 400 PRINT "HOW MANY ACTIVITIES IN THIS NETWORK?"
  32. 410 INPUT N
  33. 420 FOR I=1 TO N
  34. 430 PRINT
  35. 440 PRINT "ENTER START, END NODES FOR ACTIVITY";I;
  36. 450 INPUT A(I,1),A(I,2)
  37. 460 IF A(I,1)<A(I,2) THEN 550
  38. 470 IF A(I,1)<N THEN 550
  39. 480 IF A(I,2)<N THEN 550
  40. 490 PRINT "START NODE MUST BE NUMBERED LOWER"
  41. 500 PRINT "THEN END NODE.  AND END NODE MUST"
  42. 510 PRINT "BE LESS THEN THE NUMBER OF ACTIVITIES."
  43. 520 PRINT "*********   TRY AGAIN    *********"
  44. 530 PRINT
  45. 540 GOTO 430
  46. 550 PRINT "ENTER DURATION AND COST";
  47. 560 INPUT E(I,1),E(I,2)
  48. 570 S(I)=0
  49. 580 F(I)=0
  50. 590 NEXT I
  51. 600 REM LOOP TO FIND EARLY START TIMES FOR NETWORK
  52. 610 FOR I=1 TO N
  53. 620 IF S(A(I,2))>=S(A(I,1))+E(I,1) THEN 640
  54. 630 S(A(I,2))=S(A(I,1))+E(I,1)
  55. 640 NEXT I
  56. 650 F(A(N,2))=S(A(N,2))
  57. 660 REM LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK
  58. 670 FOR I=N TO 1 STEP -1
  59. 680 IF F(A(I,1))=0 THEN 710
  60. 690 IF F(A(I,1))>F(A(I,2))-E(I,1) THEN 710
  61. 700 GOTO 720
  62. 710 F(A(I,1))=F(A(I,2))-E(I,1)
  63. 720 NEXT I
  64. 730 C1=0
  65. 740 L=0
  66. 750 PRINT
  67. 760 CLS
  68. 770 REM CALCULATE SLACK TIMES IN S1
  69. 780 FOR I=1 TO N
  70. 790 PRINT "     START     END       EARLY     LATE      "
  71. 800 PRINT "     NODE      NODE      START     FINISH    "
  72. 810 PRINT "     *****     *****     *****     *****"
  73. 820 PRINT TAB(6)A(I,1);TAB(16)A(I,2);TAB(26)S(A(I,1));TAB(36)F(A(I,2))
  74. 830 PRINT
  75. 840 PRINT "DURATION";TAB(15);E(I,1)
  76. 850 S1=F(A(I,2))-S(A(I,1))-E(I,1)
  77. 860 PRINT
  78. 870 IF S1>0 THEN 920
  79. 880 PRINT
  80. 890 PRINT "SLACK";TAB(15);"CRITICAL"
  81. 900 L=L+E(I,1)
  82. 910 GOTO 940
  83. 920 PRINT "SLACK";TAB(15);S1
  84. 930 GOTO 940
  85. 940 PRINT
  86. 950 PRINT  "COST";TAB(15);E(I,2)
  87. 960 C1=C1+E(I,2)
  88. 970 PRINT
  89. 980 PRINT
  90. 990 PRINT "PRESS ANY KEY TO CONTINUE"
  91. 1000 A$=INKEY$: IF A$="" THEN 1000
  92. 1010 CLS
  93. 1020 NEXT I
  94. 1030 PRINT
  95. 1040 PRINT "CRITICAL PATH LENGTH= ";L
  96. 1050 PRINT
  97. 1060 PRINT "TOTAL COST OF NETWORK= ";C1
  98. 1070 PRINT
  99. 1080 PRINT
  100. 1090 PRINT
  101. 1100 PRINT "DO YOU WANT TO CHANGE ANY "
  102. 1110 PRINT "ACTIVITY DURATIONS? (Y/N)"
  103. 1120 INPUT A$
  104. 1130 IF A$="N" THEN 1310
  105. 1140 IF A$<>"Y" THEN 1080
  106. 1150 PRINT
  107. 1160 CLS
  108. 1170 PRINT "WHICH ACTIVITY?"
  109. 1180 INPUT I
  110. 1190 IF I<1 THEN 1150
  111. 1200 IF I>N THEN 1150
  112. 1210 PRINT"CURRENT DURATION IS";E(I,1);",COST=";E(I,2)
  113. 1220 PRINT "ENTER NEW DURATION AND COST";
  114. 1230 INPUT E(I,2),E(I,2)
  115. 1240 PRINT "******    RECALCULATION NETWORK    ******"
  116. 1250 PRINT
  117. 1260 FOR I=1 TO N
  118. 1270 S(I)=0
  119. 1280 F(I)=0
  120. 1290 NEXT I
  121. 1300 GOTO 600
  122. 1310 END
  123. 1320 CLS A$=STRING$(80,205)
  124. "
  125. 1250 PRINT
  126. 1260 FOR I=1 TO N
  127. 1270 S(I)=0
  128. 1280 F(I)=0
  129. 1290 NEXT I
  130. 1300 GOTO 600
  131. 1